package pdamh.model.manager;

import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;
import pdamh.model.exceptions.IdInvalidoException;
import pdamh.model.exceptions.ImpossivelSalvarException;
import pdamh.model.exceptions.ProjetoExistenteException;
import pdamh.model.unidade.UnidadeOperacional;

public class GerenciadorProjetosTest extends TestCase {
	
	private GerenciadorProjetos gerenciador;
	
	public void setUp() {
		 gerenciador = GerenciadorProjetos.getInstance();
	}
	
	public void testAddProjeto() throws ProjetoExistenteException, ImpossivelSalvarException, IdInvalidoException {
		gerenciador.clear();
		List<UnidadeOperacional> unidades = new ArrayList<UnidadeOperacional>();
		unidades.add(new UnidadeOperacional(1));
		unidades.add(new UnidadeOperacional(2));
		gerenciador.addProjeto("Projeto X", "Descricao Chula", unidades);
		assertEquals(1, gerenciador.getProjetos().size());
		assertEquals("[Projeto X, unidades: [Unidade: 1, Unidade: 2]]", gerenciador.getProjetos().toString());
		gerenciador.addProjeto("Projeto Y", "Descricao Zula", unidades);
		assertEquals(2, gerenciador.getProjetos().size());
		assertEquals("[Projeto X, unidades: [Unidade: 1, Unidade: 2], " +
				"Projeto Y, unidades: [Unidade: 1, Unidade: 2]]", gerenciador.getProjetos().toString());
		gerenciador.saveAll();
	}

	public void testSaveAndLoad() {
		gerenciador.loadAll();
		assertEquals(2, gerenciador.getProjetos().size());
		assertEquals("[Projeto X, unidades: [Unidade: 1, Unidade: 2], " +
				"Projeto Y, unidades: [Unidade: 1, Unidade: 2]]", gerenciador.getProjetos().toString());

		gerenciador.clear();
		try {
			gerenciador.saveAll();
		} catch (ImpossivelSalvarException e) {
			e.printStackTrace();
			fail(e.getMessage());
		}
		assertEquals(0, gerenciador.getProjetos().size());
		gerenciador.loadAll();
		assertEquals(0, gerenciador.getProjetos().size());
		
	}

}
